iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
0
Google Developers Machine Learning

ML Study Jam -機器學習系列 第 23

Day 23 Feature Crosses part 2 (特徵組合 on GCP)

  • 分享至 

  • xImage
  •  

Feature Enginnering

Feature Crosses part 2

improve ML Model with Feature Engineering

那這些觀念實際上應用要怎麼使用呢???此次實驗最主要的目的是要預估我們之前常講的出租車例子,要怎麼利用加入Feature Crosses觀念來提高我模型的準確率,一樣先創建bucket、notebooks接著切換至training-data-analyst> courses> machine_learning> deepdive> 04_features>taxifeateng 打開 feateng.ipynb,開始進行實驗。

  1. 首先第一步當然就是安裝相關套件,並且設定相關位置與資訊,進行環境的建置。
import os
PROJECT = 'xxx' #改成自己的資訊
BUCKET = 'xxx' 
REGION = 'xxx' 
  1. 接著定義要如何在bigquery中獲取資料,並且先將相關資料做篩選,像是經緯度的設置、費用的多寡、時間或日期等資訊,接著將資料利用hash function分為train、valid、test的資料集。
    https://ithelp.ithome.com.tw/upload/images/20190923/20120289TXffAJCK2J.png

  2. 從bigquery抓取資料後,在本地端創造pipeline進行預處理的dataflow job批次取的資料,同時定義所要的csv格式,最後儲存到bucket中,我們在bucket中就可以看到相關資訊了。
    https://ithelp.ithome.com.tw/upload/images/20190923/20120289v0GYAXTOlc.pnghttps://ithelp.ithome.com.tw/upload/images/20190923/201202894peDTQFNC4.png

  3. 有另外一種方式可以利用Cloud Dataflow來進行抓取,用這個方式的好處是可以視覺化的呈現結果在GCP上,對於我們如果要看相關的資訊可以從這個地方更完整來獲得。
    https://ithelp.ithome.com.tw/upload/images/20190923/20120289xQJCq40Srf.png

  4. 接著我們要將這些資料拿到tensorflow來做運用

    • 首先我們要先定義我們輸入的要給甚麼參數
      https://ithelp.ithome.com.tw/upload/images/20190924/20120289Owvwh3cRUZ.png
    • 再來要設定用estimator的架構要長如何,並且使用Feature Crosses
      https://ithelp.ithome.com.tw/upload/images/20190924/20120289soldVxP9dY.pnghttps://ithelp.ithome.com.tw/upload/images/20190924/20120289vbPEhZ2tQQ.png
    • 並創造一個函數用來計算經緯度的距離作為特徵
      https://ithelp.ithome.com.tw/upload/images/20190924/20120289arohTFUHPI.png
    • 最後撰寫test.json將其丟進模型進行預測,可以看到輸出結果,代表依照上述條件,預測出來大約要4塊錢左右的車費
{"dayofweek": "Sun", "hourofday": 17, "pickuplon": -73.885262, "pickuplat": 40.773008, "dropofflon": -73.987232, "dropofflat": 40.732403, "passengers": 2}

https://ithelp.ithome.com.tw/upload/images/20190924/20120289hINEnLLuzQ.png

以上的所有步驟都能夠放置於GCP進行運算,不過路徑要改成bucket位置,步驟跟上面的方法一模一樣這邊就不在贅述

  1. 接下來可以將模型部屬於雲端,不過要記得幾件事
    • 如果之前有做過部屬的動作,必須將之前的版本與模型進行刪除,再重新創建,避免發生衝突的問題。
#gcloud ai-platform versions delete ${MODEL_VERSION} --model ${MODEL_NAME}
#gcloud ai-platform delete ${MODEL_NAME}
gcloud ai-platform models create ${MODEL_NAME} --regions $REGION
gcloud ai-platform versions create ${MODEL_VERSION} --model ${MODEL_NAME} --origin ${MODEL_LOCATION} --runtime-version $TFVERSION
  1. 除了上述的有關的步驟以外大家可以嘗試使用更多的資料集、加入隱藏層、改變batch_size等參數來得到更好的訓練效果。
    • 最後能夠用下方圖表圖來觀察到實際上更改參數、增加資料量對於我們的RMSE是真的能得到改善的
   --train_steps = num_rows * num_epochs / train_batch_size
   --train_batch_size=512 --nbuckets=16 --hidden_units="64 64 64 8"

https://ithelp.ithome.com.tw/upload/images/20190924/20120289EgscJ1irfm.png


上一篇
Day 22 Feature Crosses part 1(特徵組合)
下一篇
Day 24 TF Transform
系列文
ML Study Jam -機器學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言